// 屏幕尺寸类型
export type ScreenSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'

// 列数类型
export type ColumnCount = 2 | 3 | 4 | 4 | 5

// 网格列数类名类型
export type GridColsClass =
  'grid-cols-2 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-4 2xl:grid-cols-5'

// 断点配置
export const BREAKPOINTS = {
  xs: 0, // 0px
  sm: 640, // 640px
  md: 768, // 768px
  lg: 1024, // 1024px
  xl: 1280, // 1280px
  '2xl': 1536, // 1536px
} as const

// 列数配置
export const COLUMN_CONFIG = {
  xs: 2, // 0px-639px: 2列
  sm: 2, // 640px-767px: 2列
  md: 3, // 768px-1023px: 3列
  lg: 4, // 1024px-1279px: 4列
  xl: 4, // 1280px-1535px: 4列
  '2xl': 5, // 1536px+: 5列
} as const

// 电影详情类型
export interface MovieDetail {
  id: number
  title: string
  originalTitle?: string
  coverUrl: string
  videoUrl?: string
  rating: number
  year: number
  duration: string
  genres: string[]
  description: string
  plot: string
  actors: string[]
  director: string
  uploader: {
    id: string // 改为string类型，匹配数据库中的UUID
    name: string
    avatar?: string
  }
  views: number
  likes: number
  isAi: boolean
  universe?: string // 平行宇宙设定
  tags: string[]
  language: string
  country: string
  budget?: string
  boxOffice?: string
  awards?: string[]
  trivia?: string[]
  createdAt: string
  updatedAt: string
}

// 评论类型
export interface Comment {
  id: number
  userId: string // 改为string类型，匹配数据库中的UUID
  user: {
    id: string // 改为string类型，匹配数据库中的UUID
    name: string
    avatar?: string
    isAi: boolean
  }
  content: string
  likes: number
  dislikes: number
  replies: Comment[]
  createdAt: string
  updatedAt: string
  userVote?: number // 用户投票状态: 1=点赞, -1=点踩, 0=未投票 (integer类型)
  replyCount?: number // 回复数量
  parentId?: number // 父评论ID，用于标识回复
  parentComment?: {
    id: number
    content: string
    user: {
      id: string
      name: string
      avatar?: string
      isAi: boolean
    }
  } // 父评论信息
  movie?: {
    id: number
    title: string
    coverUrl: string
  }
}

// 用户类型
export interface User {
  id: string
  name: string
  avatar?: string
  bio?: string
  isAi: boolean
  followers: number
  following: number
  uploads: number
  createdAt: string
}
